package file;

import java.io.File;
import java.net.URISyntaxException;

/**
 * java.io.File
 * File可以表示文件系统中的一个文件或目录。使用它可以:
 * 1:访问其表示的文件或目录的属性信息(名字，大小等)
 * 2:创建或删除文件，目录
 * 3:访问一个目录的子项信息
 * 但是不能访问文件数据。
 *
 */
public class FileDemo {
    public static void main(String[] args) throws URISyntaxException {
        /*
            绝对路径:G:/IDEA_WorkSpace/JSD2104_SE/demo.txt

            相对路径:./demo.txt
            "./":当前目录
         */
//        File file = new File("./demo.txt");
        /*
            相对路径中另一个比较常见的是，当前类所在的目录。
            写法:
            当前类的类名.class.getResource("同目录中的文件名").toURI()
            需要注意:
            以下面的代码为例:
            定位的不是:G:/IDEA_WorkSpace/JSD2104_SE/src/main/java/file/demo.txt
            因为FileDemo.java虽然在上面的file目录中，但是JVM执行的是编译后的class文件
            而改文件IDEA是放在:
            G:/IDEA_WorkSpace/JSD2104_SE/target/classes/file/FileDemo.class
            所以下面实际定位demo.txt文件的位置为:
            G:/IDEA_WorkSpace/JSD2104_SE/target/classes/file/demo.txt
         */
        System.out.println(FileDemo.class.getResource("demo.txt"));
        File file = new File(
                FileDemo.class.getResource("demo.txt").toURI()
        );

        //获取文件名
        String name = file.getName();
        System.out.println(name);
        //获取文件大小(单位是字节)
        long len = file.length();
        System.out.println(len+"个字节");
        //是否可读
        boolean cr = file.canRead();
        System.out.println("可读:"+cr);
        //是否可写
        boolean cw = file.canWrite();
        System.out.println("可写:"+cw);
        //是否隐藏
        boolean ih = file.isHidden();
        System.out.println("是否隐藏:"+ih);
    }
}
